package com.ldp.designpatterns.review.structure.decorator.demo1.concreteDecorator;

import com.ldp.designpatterns.review.structure.decorator.demo1.component.Component;
import com.ldp.designpatterns.review.structure.decorator.demo1.decorator.Decorator;

/**
 * @ClassName ConcreteDecorator
 * @Description TODO 第4步：创建具体装饰器ConcreteDecorator 继承 抽象装饰器 Decorator
 * @Author lindipei
 * @Date 2023/10/20 17:19
 */
//具体装饰器
class ConcreteDecorator extends Decorator {
    public ConcreteDecorator(Component component) {
        super(component);
    }

    @Override
    public void operation() {
        // 在处理父类的方法时，可以在处理前后可以加一些附加功能
        // 如果不调用父类的方法，表示完全改写方法，实现新功能
        super.operation();
        addedFunction();
    }

    public void addedFunction() {
        System.out.println("为具体构件角色增加额外的功能addedFunction()");
    }
}